/**
 * 2009-12-15 下午02:17:18 
 * esignature
 * com.smc.signature
 * X509Certificate
 */
package com.smc.signature;
 
import java.io.File;

/**
 * @author chenheng
 * @version 0.0.1
 * X509协议证书接口
 */
public interface Certificate {
	/**
	 * 生产证书请求。
	 * 应用程序生产证书请求，发送给可信的CA机构进行认证。将CA的认证答复导入到证书
	 * 链中，以对其它证书进行认证。
	 * @param alias	别名
	 */
	public void certRequest(String alias);
	/**
	 * 删除指定证书
	 * @param alias	别名
	 */
	public void certDelete(String alias);
	/**
	 * 导出证书
	 * @param alias	别名
	 */
	public void certExport(String alias);
	/**
	 * 生成钥匙对
	 * @param alias	别名
	 */
	public void genkey(String alias,String dname,String keyalg,String keysize,String sigalg,String validity,String keypass);
	/**
	 * 导入证书
	 * @param alias	别名
	 */
	public void certImport(String alias);
	/**
	 * 获取指定别名的证书链
	 * @param alias	别名
	 */
	public void certList(String alias);
	/**
	 * 打印证书信息
	 * @param cert
	 */
	public void certPrint(File cert);
	/**
	 * 生产自签名证书
	 * @param alias
	 */
	public void certSelf(String alias);
	/**
	 * 更改钥匙库密码
	 * @param oldPass
	 * @param newPass
	 */
	public void storePassword(String oldPass,String newPass);
	/**
	 * 更改指定钥匙项目的密码
	 * @param oldPass	
	 * @param newPass
	 */
	public void keyPassword(String alias,String oldPass,String newPass);
	/**
	 * 复制指定钥匙项目
	 * @param alias
	 * @param destAlias
	 */
	public void keyClone(String alias,String destAlias);
	/**
	 * 对PDF文档进行签名
	 * @param params	依次包括：别名，私钥密码，待签名文件路径，签名后文件路径，签名原因，签名位置
	 */
	public boolean sign(String[] params);
}
